【MATLAB第24期】基于matlab的智能进化算法与LSTM |
您所在的位置:网站首页 › matlab state函数 › 【MATLAB第24期】基于matlab的智能进化算法与LSTM |
## 【MATLAB第24期】基于matlab的智能进化算法与LSTM-Attention注意力机制结合的回归预测模型## 运行环境: matlab2020a,cpu ## 数据:本文采用600行6输入1输出数据样本,其中前500(90%训练,10%验证),后100进行测试。 LSTM_Attention的代码网上基本有售卖,本文在基础上进行优化,即通过鲸鱼优化算法WOA优化LSTM_Attention模型的3个超参数,分别为隐含层神经元数量、最小批处理数量,最大训练次数,目标函数选用测试集的1-R2作为评价指标,3个超参数上下限为: lb = [30 5 10 ];%三个参数的下限 ub = [150 20 50 ];%三个参数的上限## 参数设置:%LSTM结构参数 LearnRateDropFactor = 0.9;%学习率下降因子 LearnRate = 0.01;%初始学习率 LearnRatestep=5;%每5轮更新学习率 executionEnvironment = "auto";%运行环境为自动 validatasize=10%;%训练过程中验证集比例为10% validationFrequency = 10;%每10次训练验证1次 gradientDecayFactor = 0.9;%梯度衰减因子为0.9 squaredGradientDecayFactor = 0.999;%平方梯度衰减因子为0.999 gradientThreshold = 6;%梯度阈值为6 loss = mse;%训练过程中损失函数为mse函数 %WOA参数 SearchAgents_no = 8; % 种群数量 8 Max_iteration = 5; % 迭代次数 5 ```## 注意力机制部分代码:%% 输入部分 % Lstm_Y LSTM输出序列(CBT) % Train_Y 训练样本标签 % params 训练权重参数 % state 状态变量 %% 需要学习的参数 weight = params.cnn.weight; recurrentWeights = params.lstm.recurrentWeights; bias = params.lstm.bias; %% 不同批次间传递的参数(这里假设每一轮epoch中,不同Batch间的state是传递的,但不学习; % 不同epoch之间的state重置) h0 = state.lstm.h0; c0 = state.lstm.c0; [Lstm_Y,h0,c0] = lstm(Train_X,h0,c0,weight,recurrentWeights,bias); %% Attention Attentionweight = params.attention.weight; % 计算得分权重 Ht = Lstm_Y(:,:,end); % 参考向量 %% Attention输出 weight1 = params.attenout.weight1; bias1 = params.attenout.bias1; weight2 = params.attenout.weight2; bias2 = params.attenout.bias2; Hthat = fullyconnect(Vt,weight1,bias1) + fullyconnect(Ht,weight2,bias2); %% 全连接层前置层(降维) LastWeight = params.fullyconnect.weight1; LastBias = params.fullyconnect.bias1 ; FullyconnectInput = fullyconnect(Hthat,LastWeight,LastBias); FullyconnectInput = relu(FullyconnectInput); %% Fullyconnect输入参数 fullyweight = params.fullyconnect.weight2; fullybias = params.fullyconnect.bias2; output_Y = fullyconnect(FullyconnectInput,fullyweight,fullybias); output_Y = squeeze(output_Y); output_Y = relu(output_Y);## 预测结果:优化前超参数设置为【50,10,10】即神经元50个,训练次数及最小批为10. 优化后为【89 7 36】 优化后: 均方根误差(RMSE):185.935 平均绝对误差(MAE):136.0886 平均相对百分误差(MAPE):3.5524% R-square决定系数(R2):0.88852 优化前: 均方根误差(RMSE):259.176 平均绝对误差(MAE):218.3789 平均相对百分误差(MAPE):6.2451% R-square决定系数(R2):0.77565 ## 分析:案例数据精度仍存在一些不足,除了超参数范围对结果的影响,进化算法选取及参数设置以外,数据的选择,目标函数的选择以及运行环境(CPU/GPU)对结果影响也较大。 研究发现,通过试验发现GPU的精度要明显高一些,其次,选择1-R2作为目标函数比选择RMSE均方根误差作为目标函数的精度高一些。 ## 代码获取:点击下方链接,即可获得下载链接。 【获取链接】 创作不易,感谢理解。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |